home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / cris / include / asm / tlbflush.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.2 KB  |  49 lines

  1. #ifndef _CRIS_TLBFLUSH_H
  2. #define _CRIS_TLBFLUSH_H
  3.  
  4. #include <linux/mm.h>
  5. #include <asm/processor.h>
  6. #include <asm/pgtable.h>
  7. #include <asm/pgalloc.h>
  8.  
  9. /*
  10.  * TLB flushing (implemented in arch/cris/mm/tlb.c):
  11.  *
  12.  *  - flush_tlb() flushes the current mm struct TLBs
  13.  *  - flush_tlb_all() flushes all processes TLBs
  14.  *  - flush_tlb_mm(mm) flushes the specified mm context TLB's
  15.  *  - flush_tlb_page(vma, vmaddr) flushes one page
  16.  *  - flush_tlb_range(mm, start, end) flushes a range of pages
  17.  *
  18.  */
  19.  
  20. extern void __flush_tlb_all(void);
  21. extern void __flush_tlb_mm(struct mm_struct *mm);
  22. extern void __flush_tlb_page(struct vm_area_struct *vma,
  23.                unsigned long addr);
  24.  
  25. #ifdef CONFIG_SMP
  26. extern void flush_tlb_all(void);
  27. extern void flush_tlb_mm(struct mm_struct *mm);
  28. extern void flush_tlb_page(struct vm_area_struct *vma, 
  29.                unsigned long addr);
  30. #else
  31. #define flush_tlb_all __flush_tlb_all
  32. #define flush_tlb_mm __flush_tlb_mm
  33. #define flush_tlb_page __flush_tlb_page
  34. #endif
  35.  
  36. static inline void flush_tlb_range(struct vm_area_struct * vma, unsigned long start, unsigned long end)
  37. {
  38.     flush_tlb_mm(vma->vm_mm);
  39. }
  40.  
  41. static inline void flush_tlb(void)
  42. {
  43.     flush_tlb_mm(current->mm);
  44. }
  45.  
  46. #define flush_tlb_kernel_range(start, end) flush_tlb_all()
  47.  
  48. #endif /* _CRIS_TLBFLUSH_H */
  49.